package com.jiyun.h2303b.controller;

import cn.hutool.core.stream.StreamUtil;
import com.jiyun.h2303b.service.WxPayService;
import com.jiyun.h2303b.util.IdWorker;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.Map;

@RestController
@RequestMapping("wx")
public class WxPayController {

    @Autowired
    private WxPayService wxPayService;

    /**
     * 添加了一个注释
     * @return
     * @throws Exception
     */
    @RequestMapping("getUrl")
    public Map getUrl() throws Exception{

        // todo 订单先暂时生成,默认订单金额1分
        IdWorker idWorker=new IdWorker(0,0);
        String orderNo = idWorker.nextId()+"";
        System.out.println("你完成了你的代码部分，上传到了码云");
        System.out.println("同事A完成了他的代码部分，并且上传到了码云");
         System.out.println("同事B完成了他的代码部分，并且上传到了码云");
          System.out.println("同事C完成了他的代码部分，并且上传到了码云");
        return wxPayService.getCodeUrl(orderNo,"1");
    }




    @RequestMapping("queryOrder")
    public String queryOrder(String out_trade_no) throws Exception{
        String msg = "";
        int i = 0;
        // 1循环去请求微信支付查询订单状态接口
        // 2.1如果得到结果异常，则跳出循环，返回结果：支付异常
        // 2.2如果得到结果为支付成功，则跳出循环，返回结果：支付成功
        // 2.3如果循环了20次，还不是支付成功结果，则跳出循环，返回结果：二维码超期
        while (true){
            i++;
            System.out.println("开始循环检索订单的支付状态，循环查询了"+i+"次");

            Thread.sleep(2000);
            String orderState = wxPayService.orderquery(out_trade_no);
            // 2.1如果得到结果异常，则跳出循环，返回结果：支付异常
            if (StringUtils.isEmpty(orderState)) {
                msg = "支付结果异常";
                System.out.println(msg);
                break;
            }
            // 2.2如果得到结果为支付成功，则跳出循环，返回结果：支付成功
            if(orderState.equals("SUCCESS")) {
                msg = "SUCCESS";
                System.out.println(msg);
                break;
            }
            // 2.3如果循环了20次，还不是支付成功结果，则跳出循环，返回结果：二维码超期
            if(i>=20){
                msg = "二维码超期";
                System.out.println(msg);
                break;
            }
        }
        return msg;
    }


//
//    @RequestMapping("queryOrder")
//    public String queryOrder(String out_trade_no) throws Exception{
//        String msg = "";
//        int i = 0;
//        while (true){
//            i++;
//            Thread.sleep(3000);
//            String orderState = wxPayService.orderquery(out_trade_no);
//            System.out.println(orderState);
//            if (StringUtils.isEmpty(orderState)) {
//                msg = "支付结果异常";
//                System.out.println(msg);
//                break;
//            }
//
//            if (orderState.equals("SUCCESS")){
//                msg = "支付成功";
//                System.out.println(msg);
//                break;
//            }
//
//            if(i>30) {
//                msg = "支付超时，需要从新刷新页面，请求二维码";
//                System.out.println(msg);
//                break;
//            }
//        }
//        System.out.println(msg);
//        return msg;
//    }
//
//


}
